|
|
|
|
- Búsqueda genérica/búsqueda por coincidencia de datos de salida
- Realizar una búsqueda en una clave compuesta
- Buscar en un artículo de array
- Buscar y filtrar
- Bloqueos
<Fuente>.SeekFirst (Función)
No disponible con este tipo de conexión
Establece la posición en el primer registro que tenga un elemento específico con un valor mayor o igual al valor buscado. El registro no se lee. El número de la Record actual se modifica sólo cuando es devuelto por <Fuente>.RecNum. Para las funciones que manipular el número actual de Record ( <Fuente>.Delete, <Fuente>.Read, <Fuente>.Modify, etc.), el valor de este número no se actualiza: se debe utilizar la función <Fuente>.RecNum. Ejemplo de no hacer:
// Deletes a record not corresponding to the expected one Customer.SeekFirst(CustomerID, 25) Customer.Delete()
pero:
// Delete the sought record Customer.SeekFirst(CustomerID, 25) Customer.Delete(Customer.RecNum())
Atención: El registro cargado en memoria no se modifica. Las variables HFSQL (por ejemplo, Cliente.Nombre, es decir el elemento Nombre del archivo Cliente) no se actualizan. En la mayoría de los casos, <Fuente>.SeekFirst establece la posición en el archivo de datos para realizar un bucle a través de los registros que coinciden con una condición. Después de llamar a la función <Fuente>.SeekFirst, se pueden producir los siguientes casos: - se encontró un registro que corresponde a la condición, se bloqueó (si es necesario) y se cargó en la memoria: <Fuente>.Found devuelve True.
- el archivo de datos está vacía o no hay Record correspondiente a la condición: <Fuente>.Out devuelve True.
- la función intenta bloquear un registro ya bloqueado en modo de lectura: las funciones HErrorLock y <Fuente>.Out devuelven True.
// Find the first record for which // the Customer name is Moore Customer.SeekFirst(Name, "Moore")
// The record is not read. // Finds all the customers with a specific last and first names. // The search is performed according to a composite key. bufSoughtVal is Buffer = Customer.BuildKeyValue(LastName_FirstName, sLastName, sFirstName) Customer.SeekFirst(LastName_FirstName, bufSoughtVal, hLockWrite) WHILE Customer.Found() = True Customer.Delete(Customer.RecNum()) Customer.Next(LastName_FirstName, hLockWrite) END
Sintaxis
<Result> = <Source>.SeekFirst(<Key item> , <Sought value> [, <Options>])
<Result>: Booleano - True si la posición se fijó en el Record (corresponde al valor de <Fuente>.Found).
- False si se produce un problema. Este problema puede ser causado por:
- un problema de posicionamiento (archivo de datos vacío, etc.): la función <Fuente>.Found devuelve False y la función HError devuelve 0.
- un error: la función HError devuelve un número entero distinto de 0. La función HErrorInfo devuelve más detalles.
<Source>: Tipo de fuente especificada Nombre del archivo de datos HFSQL utilizado. <Key item>: Cadena de caracteres Nombre del elemento clave sobre el que se realizará la búsqueda. <Sought value>: Tipo de valor Valor del artículo buscado. <Options>: Constante o combinación de constantes opcional Configura:- el modo de bloqueo aplicado al buscado Record
- el tipo de búsqueda realizada.
| | hGeneric | Búsqueda genérica (ver las Notas) Una búsqueda de coincidencia exacta es realizada por Default (constante no especificada). | hKeepFilter | El filtro set de <Fuente>.Filter se tendrá en cuenta, aunque la clave de búsqueda no esté optimizada para el filtro. Recordatorio: la función <Fuente>.Filter devuelve la clave de búsqueda optimizada para el filtro. Atención: en este caso, pueden producirse problemas de rendimiento en los archivos grandes. Por Default, la iteración realizada después de <Fuente>.SeekFirst ignora el filtro. | hLimitParsing | La iteración se detendrá cuando se encuentre el último valor buscado. El actual Record corresponderá a este último Record encontrado. <Fuente>.Found devolverá False y <Fuente>.Out devolverá True. Esta constante se utiliza para optimizar la velocidad de búsqueda en el modo Cliente/Servidor. | hLockNo | Sin bloqeuo: la Record puede ser leída o modificada por otra aplicación durante la lectura. | hLockReadWrite | Bloqueo de lectura y escritura: el Record que se lee actualmente no puede ser leído o modificado por otra aplicación.
| hLockWrite | Bloqueo de escritura: el Record que se lee actualmente puede ser leído por otra aplicación pero no puede ser modificado por otra aplicación. |
Observaciones Búsqueda genérica/búsqueda por coincidencia de datos de salida - Búsqueda genérica (principalmente en las posiciones de la cadena de caracteres): Encuentra todos los registros que empiezan con el valor especificado.
Por ejemplo: Cuando se realiza una búsqueda genérica en "Smith" (para el elemento NAME), todos los registros cuyo elemento Name comience con "Smith" coincidirán con la búsqueda. Por lo tanto, el registro que contiene "Martínez" corresponderá a la búsqueda (la función HFound devuelve True). - Búsqueda exacta: Busca todos los registros que coinciden exactamente con el valor especificado..
Por ejemplo: Al realizar una búsqueda exacta en la cadena "Martin" (para el elemento NOMBRE), la función HFound devuelve True solo para los registros cuyo elemento coincide exactamente con "Martin". - Ejemplos de búsquedas realizadas en el archivo CLIENTE ordenado por nombre:
| | | | | | Valor buscado | Opciones | <Fuente>.SeekFirst fija la posición en el Record | <Fuente>.Found vuelve | <Fuente>.Out vuelve | Explicaciones | Durand | | 1 | True | False | Durand existe. El final del archivo de datos no se ha alcanzado todavía. | Dupuis | | 1 | False | False | Dupuis no existe. Posicionamiento sobre el primer valor mayor (Durand). El final del archivo de datos no se ha alcanzado todavía. | Moro | hGeneric | 8 | True | False | Moor no existe pero la búsqueda es genérica y se encuentra Moore (entre otros). El final del archivo de datos no se ha alcanzado todavía. | Moro | | El Record no se encontró (no se movió) | False | False | El moro no existe. El final del archivo de datos no se ha alcanzado todavía. | Norbert | | El Record no se encontró (no se movió) | False | True | Norbert no existe. Posición en el primer valor mayor (este valor no existe): Se ha llegado al final del archivo de datos. |
Buscar en un artículo de array La búsqueda se realiza en el primer elemento array (elemento con índice 1). Para realizar una búsqueda en los otros elementos de array, utilice los filtros o consultas. Buscar y filtrar Si se activa un filtro ( <Fuente>.Filter), la búsqueda tiene en cuenta el filtro.
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|